﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using NEXEntidad;

public partial class WebControls_Calendario : System.Web.UI.UserControl
{
    #region Eventos de Pagina

    protected override void OnInit(EventArgs e)
    {
        try
        {
            string[,] myMonth;
            DateTime dFechaActual = DateTime.Now;
            dFechaActual = dFechaActual.ToUniversalTime();
            dFechaActual = dFechaActual.AddHours(-3);
            int iDayOfMonth = dFechaActual.Day;
            int w, d;
            myMonth = crearCalendario(dFechaActual.Year, dFechaActual.Month);

            AgregarImagenDiaActual("~/images/calendario/img_mes_" + dFechaActual.Month + ".jpg", "mes", 35, 145, 0, 0);
            AgregarImagenDiaActual("~/images/calendario/img_grande_" + iDayOfMonth + ".jpg", "diaDelMes", 35, 50, 0, 1);

            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta1", 120, 1, 0, 0);
            AgregarImagenDia("dia_domingo", "letra_d", 16, 19, 0, 1);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta2", 120, 1, 0, 2);
            AgregarImagenDia("dia_lunes", "letra_l", 16, 19, 0, 3);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta3", 120, 1, 0, 4);
            AgregarImagenDia("dia_martes", "letra_m", 16, 19, 0, 5);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta4", 120, 1, 0, 6);
            AgregarImagenDia("dia_miercoles", "letra_mi", 16, 19, 0, 7);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta5", 120, 1, 0, 8);
            AgregarImagenDia("dia_jueves", "letra_j", 16, 19, 0, 9);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta6", 120, 1, 0, 10);
            AgregarImagenDia("dia_viernes", "letra_v", 16, 19, 0, 11);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta7", 120, 1, 0, 12);
            AgregarImagenDia("dia_sabado", "letra_s", 16, 19, 0, 13);
            AgregarImagenCalendario("~/images/calendario/img_barras_violeta.jpg", "violeta8", 120, 1, 0, 14);

            for (w = 1; w < 7; w++)
            {
                for (d = 0; d < 7; d++)
                {
                    if (myMonth[w, d] != null)
                    {
                        //document.write('<a href="javascript:;" target="_top" onclick="MM_nbGroup(' + "'" + 'down' + "'" + ',' + "'" + 'navbar1' + "'" + ',' + "'" + 'dia_' + myMonth[w][d] + "'" + ','+ "'" + 'disenioweb/imagenes_dev/calendario/img_dia_sobre_' + myMonth[w][d] + '.jpg' + "'" + ',1);" onMouseOver="MM_nbGroup('+ "'" +'over'+ "'" +','+ "'" +'dia_' + myMonth[w][d] +"'" +','+ "'" + 'disenioweb/imagenes_dev/calendario/img_dia_sobre_' + myMonth[w][d] + '.jpg'+ "'" +','+ "'" +'disenioweb/imagenes_dev/calendario/img_dia_sobre_' + myMonth[w][d] + '.jpg'+ "'" +',1);" onMouseOut="MM_nbGroup('+ "'" +'out'+ "'" +');">');
                        //document.write('<img src="disenioweb/imagenes/img/numeros_almanaque/htm_numeros/numeros_sueltos/dia_'+ myMonth[w][d] + '.jpg" alt="" width="15" height="14" border="0" id="dia_' + myMonth[w][d] + '" name="dia_' + myMonth[w][d] + '"/></a>');
                        AgregarImagenBotonCalendario("~/images/calendario/img_dia_" + myMonth[w, d] + ".jpg", "dia_" + myMonth[w, d], 14, 15, w, d, dFechaActual.Year, dFechaActual.Month, Convert.ToInt32(myMonth[w, d]));
                    }
                }
            }

            base.OnInit(e);
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }

    //protected void Page_Load(object sender, EventArgs e)
    //{
    //    if (!IsPostBack)
    //    {
    //        btnSiguiente.Attributes.Add("Pagina", "");
    //        btnAnterior.Attributes.Add("Pagina", "");

    //        btnSiguiente.Attributes.Add("anio", "");
    //        btnSiguiente.Attributes.Add("mes", "");
    //        btnSiguiente.Attributes.Add("dia", "");

    //        btnAnterior.Attributes.Add("anio", "");
    //        btnAnterior.Attributes.Add("mes", "");
    //        btnAnterior.Attributes.Add("dia", "");

    //        PaginarEventos(1, DateTime.Now);
    //    }
    //}


    //void Calendario_Click(object sender, ImageClickEventArgs e)
    //{
    //    Int32 anio, mes, dia;
    //    anio = Convert.ToInt32(((ImageButton)sender).Attributes["anio"]);
    //    mes = Convert.ToInt32(((ImageButton)sender).Attributes["mes"]);
    //    dia = Convert.ToInt32(((ImageButton)sender).Attributes["dia"]);

    //    btnSiguiente.Visible = false;
    //    btnAnterior.Visible = false;

    //    PaginarEventos(1, new DateTime(anio, mes, dia));
    //}

    //protected void btnFlechas_Click(object sender, ImageClickEventArgs e)
    //{
    //    Int32 anio, mes, dia;

    //    int CurPage;
    //    if (((ImageButton)sender).Attributes["Pagina"] != null)
    //        CurPage = Convert.ToInt32(((ImageButton)sender).Attributes["pagina"]);
    //    else
    //        CurPage = 1;

    //    anio = Convert.ToInt32(((ImageButton)sender).Attributes["anio"]);
    //    mes = Convert.ToInt32(((ImageButton)sender).Attributes["mes"]);
    //    dia = Convert.ToInt32(((ImageButton)sender).Attributes["dia"]);
    //    PaginarEventos(CurPage, new DateTime(anio, mes, dia));

    //}


    #endregion

    #region Metodos privados

    //private void PaginarEventos(int PaginaActual, DateTime fecha)
    //{
    //    EventoCulturalCollection eventos = EventoCultural.Listar(true, fecha,fecha);
    //    PagedDataSource pdDataSource = new PagedDataSource();


    //    pdDataSource.DataSource = eventos;
    //    pdDataSource.AllowPaging = true;
    //    pdDataSource.PageSize = 1;

    //    pdDataSource.CurrentPageIndex = PaginaActual - 1;

    //    //Repeater1.DataSource = pdDataSource;
    //    //Repeater1.DataBind();

    //    btnAnterior.Attributes["anio"] = fecha.Year.ToString();
    //    btnAnterior.Attributes["mes"] = fecha.Month.ToString();
    //    btnAnterior.Attributes["dia"] = fecha.Day.ToString();

    //    btnSiguiente.Attributes["anio"] = fecha.Year.ToString();
    //    btnSiguiente.Attributes["mes"] = fecha.Month.ToString();
    //    btnSiguiente.Attributes["dia"] = fecha.Day.ToString();

    //    if (!pdDataSource.IsFirstPage)
    //    {
    //        btnAnterior.Attributes["Pagina"] = Convert.ToString(PaginaActual - 1);
    //        btnAnterior.Visible = true;
    //    }
    //    else
    //        btnAnterior.Visible = false;

    //    if (pdDataSource.PageCount > 0)
    //        //strPaginacion += "<span> (pagina " + CurPage.ToString() + " de " + pdDataSource.PageCount.ToString() + ")</span> ";
    //        if (pdDataSource.PageCount > 1)
    //        {
    //            lblPaginas.Visible = true;
    //            lblPaginas.Text = "(Pag. " + PaginaActual.ToString() + " de " + pdDataSource.PageCount.ToString() + ")";
    //            if (!pdDataSource.IsLastPage)
    //            {
    //                btnSiguiente.Visible = true;
    //                btnSiguiente.Attributes["Pagina"] = Convert.ToString(PaginaActual + 1);
    //            }
    //            else
    //                btnSiguiente.Visible = false;
    //        }
    //        else
    //        {
    //            lblPaginas.Visible = false;
    //            lblPaginas.Text = "";
    //        }

    //}

    #endregion

    #region Metodos para el calendario

    private void AgregarImagenDiaActual(string imagenUrl, string idImagen, int height, int width, int rowIndex, int colIndex)
    {
        try
        {
            Image unaImagen = new Image();
            unaImagen.ImageUrl = imagenUrl;
            unaImagen.ID = idImagen;
            unaImagen.Height = height;
            unaImagen.Width = width;
            unaImagen.BorderWidth = 0;
            tablaDiaActual.Rows[rowIndex].Cells[colIndex].Controls.Add(unaImagen);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void AgregarImagenCalendario(string imagenUrl, string idImagen, int height, int width, int rowIndex, int colIndex)
    {
        try
        {
            Image unaImagen = new Image();
            unaImagen.ImageUrl = imagenUrl;
            unaImagen.ID = idImagen;
            unaImagen.Height = height;
            unaImagen.Width = width;
            unaImagen.BorderWidth = 0;
            tablaCalendario.Rows[rowIndex].Cells[colIndex].Controls.Add(unaImagen);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void AgregarImagenDia(string clase, string idImagen, int height, int width, int rowIndex, int colIndex)
    {
        try
        {
            Panel unaImagen = new Panel();
            //unaImagen.ImageUrl = imagenUrl;
            unaImagen.ID = idImagen;
            unaImagen.CssClass = "num_calendario " + clase;
            unaImagen.Height = height;
            unaImagen.Width = width;
            unaImagen.BorderWidth = 0;
            tablaCalendario.Rows[rowIndex].Cells[colIndex].Controls.Add(unaImagen);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void AgregarImagenBotonCalendario(string imagenUrl, string idImagen, int height, int width, int rowIndex, int colIndex, int anio, int mes, int dia)
    {
        try
        {
            Button unaImagen = new Button();
            //unaImagen.ImageUrl = imagenUrl;
            unaImagen.CssClass = "num_calendario num_" + dia.ToString();
            unaImagen.BorderStyle = BorderStyle.None;
            unaImagen.ID = idImagen;
            unaImagen.Height = height;
            unaImagen.Width = width;
            unaImagen.Attributes.Add("anio", anio.ToString());
            unaImagen.Attributes.Add("mes", mes.ToString());
            unaImagen.Attributes.Add("dia", dia.ToString());
            unaImagen.Attributes.Add("onmouseout", "numeroSobre('num_" + dia.ToString() + "','num_" + dia.ToString() + "_sobre" + "');");
            unaImagen.Attributes.Add("onmouseover", "numeroSobre('num_" + dia.ToString() + "_sobre" + "','num_" + dia.ToString() + "');");

            /*AGREGADO PARA DEJAR DE USAR SCRIPTMANAGER*/
            unaImagen.Attributes.Add("onclick", "javascript: return buscarEventos(" + anio.ToString() + "," + mes.ToString() + "," + dia.ToString() + ");");

            /**/

            tablaCalendario.Rows[rowIndex].Cells[colIndex].Controls.Add(unaImagen);
            
            /*ELIMINADO PARA DEJAR DE USAR SCRIPTMANAGER*/
            //unaImagen.Click += new ImageClickEventHandler(Calendario_Click);
            /**/
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    string[,] crearCalendario(int iYear, int iMonth)
    {
        string[,] aMonth = new string[7, 7];

        DateTime dCalDate = new DateTime(iYear, iMonth, 1); //new Date(iYear, iMonth-1, 1);
        int iDayOfFirst = obtenerValorDia(dCalDate.DayOfWeek) ; //dCalDate.getDay();
        int iDaysInMonth = DateTime.DaysInMonth(iYear, iMonth);//fGetDaysInMonth(iMonth, iYear);
        int iVarDate = 1;
        int d, w;

        aMonth[0, 0] = "<img src='images/calendario/img_letra_d.jpg' alt='' width='19' height='16' />";
        aMonth[0, 1] = "<img src='images/calendario/img_letra_l.jpg' alt='' width='19' height='16' />";
        aMonth[0, 2] = "<img src='images/calendario/img_letra_m.jpg' alt='' width='19' height='16' />";
        aMonth[0, 3] = "<img src='images/calendario/img_letra_m.jpg' alt='' width='19' height='16' />";
        aMonth[0, 4] = "<img src='images/calendario/img_letra_j.jpg' alt='' width='19' height='16' />";
        aMonth[0, 5] = "<img src='images/calendario/img_letra_v.jpg' alt='' width='19' height='16' />";
        aMonth[0, 6] = "<img src='images/calendario/img_letra_s.jpg' alt='' width='19' height='16' />";

        for (d = iDayOfFirst; d < 7; d++)
        {
            aMonth[1, d] = iVarDate.ToString();
            iVarDate++;
        }
        for (w = 2; w < 7; w++)
        {
            for (d = 0; d < 7; d++)
            {
                if (iVarDate <= iDaysInMonth)
                {
                    aMonth[w, d] = iVarDate.ToString();
                    iVarDate++;
                }
            }
        }

        return aMonth;
    }

    int obtenerValorDia(System.DayOfWeek dia)
    {
        int valorDia=-1;
        switch (dia)
        {
            case DayOfWeek.Friday:
                valorDia = 5;
                break;
            case DayOfWeek.Monday:
                valorDia = 1;
                break;
            case DayOfWeek.Saturday:
                valorDia = 6;
                break;
            case DayOfWeek.Sunday:
                valorDia = 0;
                break;
            case DayOfWeek.Thursday:
                valorDia = 4;
                break;
            case DayOfWeek.Tuesday:
                valorDia = 2;
                break;
            case DayOfWeek.Wednesday:
                valorDia = 3;
                break;
        }
        return valorDia;
    }

    #endregion

}
